local component = require("component")
local os = require("os")
local sides = require("sides")
local colors = require("colors")

local side_train = sides.back
local side_chest = sides.front
local slot_train = 1

for i = 1, 10 do
  local slot_chest = (i % 4) + 1

  -- Wait for a train
  -- It would be nice if OpenComputers fired an inventoryChanged event
  --   then we could wait for a longer time
  os.sleep(1)
  while not component.transposer.getInventorySize(side_train) do
    os.sleep(0.3)
  end

  component.transposer.transferItem(side_chest, side_train, slot_train, slot_chest)
  --os.sleep(1)
  component.transposer.transferItem(side_train, side_chest, slot_chest, slot_train)

  -- trigger the train to move
  component.redstone.setBundledOutput(sides.bottom, colors.lightblue, 15)
  os.sleep(0.1)
  component.redstone.setBundledOutput(sides.bottom, colors.lightblue, 0)
end